package com.flyee.controller.tools.cartoon.model
{
	import flash.events.Event;
	import flash.events.EventDispatcher;
	 
	public class EquipXMLHelper extends EventDispatcher
	{
		private var myID:String = null;
		private var equipsList:Array = new Array();
		private var createdList:Array = null;
		public function EquipXMLHelper(xml:XML,id:String)
		{
			createdList = new Array();
			myID = id;
			if(xml.equips == null)
			{
				return
			}
			var tempLength:uint = xml.equips.length();
			for(var i:int = 0; i < tempLength;i++)
			{
				var temp:EquipsObj = new EquipsObj(xml.equips[i].toString(),this.myID);
				equipsList.push(temp);
				temp.addEventListener("createComplete",createCompleteHandle);
			}
		}
		private function createCompleteHandle(e:Event):void
		{
			createdList.push(e.currentTarget);
			if(createdList.length == this.equipsList.length)
			{
				this.dispatchEvent(new Event("createComplete"))
			}
		}
		public function getEquipList():Array
		{
			return this.equipsList;
		}
		
		public function getEquips(type:uint,dir:uint):EquipsObj
		{
			var tempLength:uint = this.equipsList.length;
			for(var i:int = 0;i< tempLength;i++)
			{
				var temp:EquipsObj = this.equipsList[i];
				if(temp.type == type && temp.direction == dir)
				{
					return temp;
				}
			}
			return null;
		}
		public function getXML():String
		{
			var tempLength:uint = this.equipsList.length;
			var tempStr:String = "<equipconfig>"
			for(var i:int = 0;i< tempLength;i++)
			{
				var temp:EquipsObj = this.equipsList[i];
				tempStr+=temp.getXML()
			}
			tempStr+= "</equipconfig>"
			return tempStr;
		}
		public function removeEquips(type:uint,dir:uint):void
		{
			var tempLength:uint = this.equipsList.length;
			for(var i:int = 0;i< tempLength;i++)
			{
				var temp:EquipsObj = this.equipsList[i];
				if(temp != null)
				{
					if(temp.type == type && temp.direction == dir)
					{
						this.equipsList.splice(i,1);
						return
					}
				}
			}
		}
		public function addEquips(type:uint,dir:uint,t:EquipsObj):void
		{
			removeEquips(type,dir)
			this.equipsList.push(t);
		}
		public function clear():void
		{
			var tempLength:uint = this.equipsList.length;
			for(var i:int = 0;i< tempLength;i++)
			{
				var temp:EquipsObj = this.equipsList[i];
				temp.clear();
			}
			equipsList.splice(0);
			equipsList = null;
		}
	}
}